const { util, ParamErr } = require("utils");
const {
    Type_Wx_Mini,
    Type_Wx_Web,
    Type_Qw_Mini,
    Type_Qw_Web,
    Type_DingDing_Web,

    Config_TokenType,
    Config_AppId,
    Config_AppSecret,
} = require("./constEnum.js");

// 参数丢失
function errorKey(key) {
    let err = new ParamErr(key);
    return [err, null];
}
// 类型
function checkParam_Type(type, typeKey) {
    let types = [Type_Wx_Mini, Type_Wx_Web, Type_Qw_Mini, Type_Qw_Web, Type_DingDing_Web];
    if (types.indexOf(type) >= 0) {
        return [null, type];
    }
    return errorKey(typeKey);
}
// 检查配置
function checkConfig(config) {
    // 读取config
    // 类型
    let totalConfig = config || {};
    //
    let type = totalConfig[Config_TokenType];
    // 检查类型
    let [typeErr, _] = checkParam_Type(type, Config_TokenType);
    if (!util.nilValue(typeErr)) {
        return [typeErr, null];
    }
    // key, 秘钥
    let appId = totalConfig[Config_AppId];
    // appId
    if (typeof appId !== "string" || util.emptyValue(appId)) {
        return errorKey(Config_AppId);
    }
    let appSecret = totalConfig[Config_AppSecret];
    if (typeof appSecret !== "string" || util.emptyValue(appSecret)) {
        return errorKey(Config_AppSecret);
    }
    return [null, totalConfig];
}

module.exports = {
    checkConfig,
};
